/*
 * @lc app=leetcode.cn id=234 lang=typescript
 *
 * [234] 回文链表
 */

// @lc code=start
/**
 * Definition for singly-linked list.
 * class ListNode {
 *     val: number
 *     next: ListNode | null
 *     constructor(val?: number, next?: ListNode | null) {
 *         this.val = (val===undefined ? 0 : val)
 *         this.next = (next===undefined ? null : next)
 *     }
 * }
 */

// 数组方法
// 如果不让使用数组，可以使用栈和队列同时载入的特性校验
// 单栈是遍历两遍，也是一样的
function isPalindrome(head: ListNode | null): boolean {
    let queue: number[] = [];
    while (head) {
        queue.push(head.val);
        head = head.next;
    }

    let i = 0;
    let j = queue.length - 1;
    while (i <= j) {
        const a1 = queue[i];
        const a2 = queue[j];
        if (a1 !== a2) return false;
        i++;
        j--;
    }
    return true;
}

// @lc code=end
